home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol048 / dltaplot.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  11.1 KB  |  308 lines

  1. 10 ' PROGRAM NAME: DLTAPLOT.BAS       WRITTEN 7-16-83       REV 09-17-83
  2. 40 '
  3. 45 ' **********************************************************
  4. 50 ' * DRIVER MODULE                                          *
  5. 55 ' **********************************************************
  6. 65 '
  7. 70  CLS
  8. 75  KEY OFF
  9. 80  PRINT "PROGRAM DLTAPLOT.BAS EXECUTING"
  10. 82  PRINT
  11. 85  INPUT "PRINTER CONNECTED TO SYSTEM (Y/N)"; YPRINT$
  12. 90  REC.CNT = 0
  13. 95  OPEN "A:DRIVE.DTA" FOR INPUT AS #1
  14. 100 INPUT #1, DRIVE$,PRNT$
  15. 105 CLOSE #1
  16. 110 IF DRIVE$ = "A" OR DRIVE$ = "a" THEN GOSUB 300 ELSE GOSUB 400
  17. 115 IF YPRINT$ <> "Y" AND YPRINT$ <> "y" THEN GOTO 135
  18. 120 WIDTH "LPT1:",80
  19. 125 '  SET UP DEFAULT CONDITIONS FOR IBM OR EPSON PRINTER
  20. 130 IF PRNT$ = "E" OR PRNT$ = "e" THEN GOSUB 4100 ELSE GOSUB 4200
  21. 132 '
  22. 135 GOSUB 500                           'SELECT GSCALE
  23. 140 '
  24. 145 GOSUB 600                           'SELECT HSCALE
  25. 150 '
  26. 155 GOSUB 700                           'SET END.NUM AND SKIP.NUM LIMITS
  27. 160 '
  28. 165 GOSUB 800                           'READ FIRST (IDENTIFICATION) REC
  29. 170 '
  30. 175 IF SKIP.NUM <> 0 THEN GOSUB 900     'SKIP INITIAL RECORDS
  31. 180 '
  32. 185 CLS
  33. 190 GOSUB 1000                          'SET UP HEADERS AND AXES
  34. 195 '
  35. 200 IF REC.CNT < END.NUM THEN GOSUB 1500 ELSE GOTO 215    'PROCESS 1ST DATA REC
  36. 202 '
  37. 205 GOSUB 1700                          'PLOT BALANCE OF RECORDS
  38. 210 '
  39. 215 GOSUB 4000                          'EOJ HOUSEKEEPING
  40. 220 '
  41. 225 END
  42. 300 ' *******************************************************************
  43. 310 ' * GOSUB 300                                                       *
  44. 320 ' * GET DATA FROM DRIVE A                                           *
  45. 330 ' *******************************************************************
  46. 340 '
  47. 350 PRINT "INSERT DATA DISKETTE IN DRIVE A"
  48. 352 IF YPRINT$ <> "Y" AND YPRINT$ <> "y" THEN GOTO 365
  49. 355 PRINT "SET PRINTER TO TOP OF PAGE"
  50. 360 PRINT "VERIFY THAT PRINTER IS ON"
  51. 365 PRINT "STRIKE ANY KEY WHEN READY"
  52. 370 A$ = INKEY$: IF A$ = "" THEN 370
  53. 380 OPEN "A:DLTAFILE.DTA" FOR INPUT AS #2
  54. 390 RETURN
  55. 400 ' *******************************************************************
  56. 410 ' * GOSUB 400                                                       *
  57. 420 ' * GET DATA FROM DRIVE B                                           *
  58. 430 ' *******************************************************************
  59. 440 '
  60. 450 PRINT "INSERT DATA DISKETTE IN DRIVE B"
  61. 452 IF YPRINT$ <> "Y" AND YPRINT$ <> "y" THEN GOTO 465
  62. 455 PRINT "SET PRINTER TO TOP OF PAGE"
  63. 460 PRINT "VERIFY THAT PRINTER IS ON"
  64. 465 PRINT "STRIKE ANY KEY WHEN READY"
  65. 470 A$ = INKEY$: IF A$ = "" THEN 470
  66. 480 OPEN "B:DLTAFILE.DTA" FOR INPUT AS #2
  67. 490 RETURN
  68. 500 ' **********************************************************
  69. 505 ' * GOSUB 500                                              *
  70. 510 ' * SELECT GSCALE                                          *
  71. 515 ' **********************************************************
  72. 520 '
  73. 525 PRINT "SELECT VERTICAL SCALE FROM FOLLOWING:"
  74. 530 PRINT "     1 - $0 TO $800 RANGE"
  75. 535 PRINT "     2 - $0 TO $1600 RANGE"
  76. 540 PRINT "     3 - $0 TO $4000 RANGE"
  77. 545 PRINT "     4 - $0 TO $8000 RANGE"
  78. 550 PRINT "     5 - $0 TO $16000 RANGE"
  79. 555 PRINT "     6 - $0 TO $32000 RANGE"
  80. 560 PRINT "     7 - $0 TO $64000 RANGE"
  81. 565 PRINT "     8 - $0 TO $128000 RANGE"
  82. 570 INPUT "VERTICAL SCALE SELECTED IS  ", GSCALE
  83. 575 IF GSCALE <= 0 OR GSCALE > 8 THEN BEEP: GOTO 525
  84. 577 '
  85. 580 ON GSCALE GOSUB 1200, 1225, 1250, 1275, 1300, 1325, 1350, 1375
  86. 590 '
  87. 595 RETURN
  88. 600 ' **********************************************************
  89. 605 ' * GOSUB 600                                              *
  90. 610 ' * SELECT HSCALE                                          *
  91. 615 ' **********************************************************
  92. 620 '
  93. 625 PRINT "SET HORIZONTAL SCALE - "
  94. 630 PRINT "    SELECT FROM 3 TO 10"
  95. 635 INPUT "    SCALE SELECTED IS  ", HSCALE
  96. 640 IF HSCALE < 3 OR HSCALE > 10 THEN BEEP: GOTO 625
  97. 660 '
  98. 665 RETURN
  99. 700 ' **********************************************************
  100. 705 ' * GOSUB 700                                              *
  101. 710 ' * SET END.NUM AND SKIP.NUM LIMITS                        *
  102. 715 ' **********************************************************
  103. 720 '
  104. 725 INPUT "INPUT LIMIT ON NUMBER OF RECS TO BE PROCESSED  ", END.NUM
  105. 730 PRINT
  106. 735 INPUT "SOME INITIAL RECORDS TO BE SKIPPED (Y/N)"; SKIP$
  107. 740 PRINT
  108. 745 IF SKIP$ <> "Y" AND SKIP$ <> "y" THEN GOTO 770
  109. 750 '
  110. 755 INPUT "INPUT COUNT OF INITIAL RECORDS TO BE SKIPPED  ", SKIP.NUM
  111. 760 GOTO 780
  112. 765 '
  113. 770 SKIP.NUM = 0
  114. 775 '
  115. 780 RETURN
  116. 800 ' ********************************************************
  117. 805 ' * GOSUB 800                                            *
  118. 810 ' * READ FIRST (IDENTIFICATION) RECORD                   *
  119. 815 ' ********************************************************
  120. 820 '
  121. 825 IF EOF(2) THEN GOTO 215
  122. 830     INPUT #2, I.FILE.TITLE$, I.FILE.OWNER$, I.FILE.UPDATE.DATE$
  123. 835 HDG1$ = I.FILE.OWNER$
  124. 870 RETURN
  125. 900 ' ********************************************************
  126. 905 ' * GOSUB 900                                            *
  127. 910 ' * SKIP NUMBER OF RECORDS SPECIFIED BY SKIP.NUM         *
  128. 915 ' ********************************************************
  129. 920 '
  130. 925 FOR I = 1 TO SKIP.NUM
  131. 930    IF EOF(2) THEN GOTO 215
  132. 935    INPUT #2, I.DATE, I.TDLR, I.DDLR
  133. 940    REC.CNT = REC.CNT + 1
  134. 945    NEXT
  135. 950 RETURN
  136. 1000 ' ********************************************************
  137. 1002 ' * GOSUB 1000                                           *
  138. 1004 ' * SET UP HEADERS AND AXES                              *
  139. 1006 ' ********************************************************
  140. 1008 '
  141. 1010 SCREEN 2,,0,0
  142. 1014 LOCATE 6,1
  143. 1016 PRINT "D"
  144. 1018 LOCATE 7,1
  145. 1020 PRINT "E"
  146. 1022 LOCATE 8,1
  147. 1024 PRINT "L"
  148. 1026 LOCATE 9,1
  149. 1028 PRINT "T"
  150. 1030 LOCATE 10,1
  151. 1032 PRINT "A"
  152. 1040 '
  153. 1042 LOCATE 25,70
  154. 1044 PRINT "PERIOD"
  155. 1050 '
  156. 1052 LOCATE 1,1
  157. 1054 PRINT HDG1$
  158. 1060 '
  159. 1062 LOCATE 1,30
  160. 1064 PRINT "PORTFOLIO VALUE CHANGES"
  161. 1070 '
  162. 1072 LOCATE 1,65
  163. 1074 PRINT DATE$
  164. 1080 '
  165. 1082 LOCATE 3,30
  166. 1084 PRINT "MAX DELTA "
  167. 1090 '
  168. 1092 LOCATE 3,40
  169. 1094 PRINT SF.HDR$
  170. 1100 '
  171. 1105 LINE (20,20)-(20,190)
  172. 1110 '   SET COL 20 TICK MARKS (EVERY 5TH ROW)
  173. 1115 FOR A = 20 TO 190 STEP 5
  174. 1120    LINE (18,A)-(22,A)
  175. 1125    NEXT A
  176. 1130 LINE (20,180)-(620,180)
  177. 1135 '   SET ROW 20 TICK MARKS (INTERVAL SPECIFIED BY HSCALE)
  178. 1140 FOR B = 20 TO 620 STEP HSCALE
  179. 1145    LINE (B,178)-(B,182)
  180. 1150    NEXT B
  181. 1155 '
  182. 1195 RETURN
  183. 1200 ' ********************************************************
  184. 1205 ' GOSUB 1200 - GSCALE = 1
  185. 1210 SF = .2
  186. 1215 SF.HDR$ = "$800"
  187. 1220 RETURN
  188. 1225 ' ********************************************************
  189. 1230 ' GOSUB 1225 - GSCALE = 2
  190. 1235 SF = .1
  191. 1240 SF.HDR$ = "$1,600"
  192. 1245 RETURN
  193. 1250 ' ********************************************************
  194. 1255 ' GOSUB 1250 - GSCALE = 3
  195. 1260 SF = .04
  196. 1265 SF.HDR$ = "$4,000"
  197. 1270 RETURN
  198. 1275 ' ********************************************************
  199. 1280 ' GOSUB 1275 - GSCALE = 4
  200. 1285 SF = .02
  201. 1290 SF.HDR$ = "$8,000"
  202. 1295 RETURN
  203. 1300 ' ********************************************************
  204. 1305 ' GOSUB 1300 - GSCALE = 5
  205. 1310 SF = .01
  206. 1315 SF.HDR$ = "$16,000"
  207. 1320 RETURN
  208. 1325 ' ********************************************************
  209. 1330 ' GOSUB 1325 - GSCALE = 6
  210. 1335 SF = 5.000001E-03          '.005 SCALE FACTOR
  211. 1340 SF.HDR$ = "$32,000"
  212. 1345 RETURN
  213. 1350 ' ********************************************************
  214. 1355 ' GOSUB 1350 - GSCALE = 7
  215. 1360 SF = .0025
  216. 1365 SF.HDR$ = "$64,000"
  217. 1370 RETURN
  218. 1375 ' ********************************************************
  219. 1380 ' GOSUB 1375 - GSCALE = 8
  220. 1385 SF = .00125
  221. 1390 SF.HDR$ = "$128,000"
  222. 1395 RETURN
  223. 1400 ' ********************************************************
  224. 1405 ' * GOSUB 1400                                           *
  225. 1410 ' * PRINT GRAPH POINTS AND INTERCONNECT W/LINES          *
  226. 1415 ' ********************************************************
  227. 1420 '
  228. 1425 LINE (OLD.C,OLD.R)-(NEW.C,NEW.R)
  229. 1430 OLD.C = NEW.C
  230. 1435 OLD.R = NEW.R
  231. 1440 NEW.C = NEW.C + HSCALE
  232. 1445 RETURN
  233. 1500 ' ********************************************************
  234. 1505 ' * GOSUB 1500                                           *
  235. 1510 ' * PROCESS FIRST DATA RECORD                            *
  236. 1515 ' ********************************************************
  237. 1520 '
  238. 1525 IF EOF(2) THEN GOTO 215
  239. 1530     INPUT #2, I.DATE, I.TDLR, I.DDLR
  240. 1535 REC.CNT = REC.CNT + 1
  241. 1540 OLD.C = 20
  242. 1545 OLD.R = 180
  243. 1550 NEW.C = OLD.C + HSCALE
  244. 1555 DDLR = I.DDLR * SF
  245. 1560 DDLR = CINT(DDLR)
  246. 1565 NEW.R = OLD.R - DDLR
  247. 1575 GOSUB 1400              'PRINT GRAPH POINTS AND INTERCONNECT W/LINES
  248. 1580 RETURN
  249. 1700 ' *********************************************************
  250. 1705 ' * GOSUB 1700                                            *
  251. 1710 ' * PLOT PORTFOLIO DOLLAR TOTALS AGAINST WEEKS            *
  252. 1715 ' *********************************************************
  253. 1720 '
  254. 1725 END.NUM = END.NUM - REC.CNT
  255. 1730 FOR I = 1 TO END.NUM
  256. 1735     IF EOF(2) THEN GOTO 1770
  257. 1740     INPUT #2, I.DATE, I.TDLR, I.DDLR
  258. 1750     DDLR = I.DDLR * SF
  259. 1755     DDLR = CINT(DDLR)
  260. 1760     NEW.R = OLD.R - DDLR
  261. 1765     GOSUB 1400              'PRINT GRAPH POINTS AND INTERCONNECT W/LINES
  262. 1768     NEXT
  263. 1769 '
  264. 1770 CLOSE #2
  265. 1780 SOUND 1760,9:SOUND 1046.5,9:SOUND 659.26,9:SOUND 440,9:SOUND 261.63,9:SOUND 164.81,9:SOUND 32767,9
  266. 1790 R$ = INKEY$: IF R$ = "" THEN 1790
  267. 1792 '
  268. 1795 RETURN
  269. 4000 ' **********************************************************
  270. 4005 ' * GOSUB 4000                                             *
  271. 4010 ' * EOJ HOUSEKEEPING                                       *
  272. 4015 ' **********************************************************
  273. 4020 '
  274. 4025 SCREEN 0,0,0,0
  275. 4030 PRINT "ALL DATA PROCESSED - PROGRAM ENDS"
  276. 4060 KEY ON
  277. 4065 RETURN
  278. 4100 '***********************************************************
  279. 4105 '*   SET EPSON PRINTER TO DEFAULT CONDITION                *
  280. 4110 '***********************************************************
  281. 4115 '
  282. 4120 LPRINT CHR$(27); CHR$(64);         'TURN OFF ALL SPCL PRINTER CODES
  283. 4125 RETURN
  284. 4200 '***********************************************************
  285. 4205 '*   SET IBM PRINTER TO DEFAULT CONDITIONS                 *
  286. 4210 '***********************************************************
  287. 4215 '
  288. 4220 LPRINT CHR$(20);                   'DOUBLE WIDTH CHAR OFF
  289. 4225 LPRINT CHR$(18);                   'COMPRESSED CHAR OFF
  290. 4230 LPRINT CHR$(27); CHR$(50);         'DEFAULT LINE SPACING (1/6")
  291. 4235 LPRINT CHR$(27); CHR$(55);         'CHAR SET #1 SELECTED
  292. 4240 LPRINT CHR$(27); CHR$(57);         'PAPER OUT SWITCH ENABLED
  293. 4245 LPRINT CHR$(27); CHR$(70);         'EMPHASIZED CHAR OFF
  294. 4250 LPRINT CHR$(27); CHR$(72);         'DOUBLE STRIKE OFF
  295. 4255 LPRINT CHR$(27); CHR$(79);         'IGNORE SKIPS OVER PERFS
  296. 4260 LPRINT CHR$(27); CHR$(85); CHR$(0);  'SELECT BIDIRECTIONAL PRINT
  297. 4265 LPRINT CHR$(27); CHR$(84);         'SUB/SUPERSCRIPT OFF
  298. 4270 LPRINT CHR$(27); CHR$(87); CHR$(0);  'DOUBLE WIDE CHAR OFF
  299. 4275 LPRINT CHR$(27); CHR$(45); CHR$(0);  'UNDERLINING OFF
  300. 4280 '
  301. 4285 RETURN
  302. 4290 '
  303. 4295 '***********************************************************
  304. ); CHR$(0);  'UNDERLINING OFF
  305. 4280 '
  306. 4285 RETURN
  307. 4290 '
  308. 4295 '************************